
#ifndef SLED_PUBLIC_H
#define SLED_PUBLIC_H

#ifdef __cplusplus
extern "C"{
#endif

/*----------------------------------include-----------------------------------*/
#include <stdint.h>
/*-----------------------------------macro------------------------------------*/

/*----------------------------------typedef-----------------------------------*/
typedef enum slde_mode
{
    SLED_MODE_SWITCH,
    SLED_MODE_PWM,
    SLED_MODE_BREATHE
}slde_mode_t;

#define SLED_PUBLIC_MEMBER \
void (*init)(void); \
slde_mode_t (*GetCurMode)(void); \
void (*SetMode)(enum slde_mode mode); \
void (*ConfigurePWM)(uint16_t duty); \
void (*ConfigureBreathe)(uint16_t breathe_speed); \
void (*ONBreathe)(void); \
void (*ON1)(void); \
void (*ON0)(void); \
void (*OFF)(void); 

typedef struct sled
{
    SLED_PUBLIC_MEMBER
}sled_t;
#define EXPORT_SLED(name) \
extern const sled_t *name;
/*----------------------------------variable----------------------------------*/

/*-------------------------------------os-------------------------------------*/

/*----------------------------------function----------------------------------*/

/*------------------------------------test------------------------------------*/

#ifdef __cplusplus
}
#endif

#endif